home *** CD-ROM | disk | FTP | other *** search
/ Gigarom 1 / Gigarom Macintosh Archives (Quantum Leap)(CDRM1080320)(1993).iso / FILES / DEV / C-H / Discipline2.0.2.sit / Discipline 2.0.2 / Discipline Examples / AddrTest2.c < prev    next >
C/C++ Source or Header  |  1991-04-09  |  924b  |  45 lines

  1. #include    <Types.h>
  2. #include <Memory.h>
  3. #include <QuickDraw.h>
  4. #include <Packages.h>
  5. #include <Strings.h>
  6. #include <SysEqu.h>
  7. #include <ToolUtils.h>
  8. #include <Traps.h>
  9. #include "Wimpy.h"
  10.  
  11. //changed this routine to C from pascal
  12. pascal char *  testAddr(adr)
  13. Ptr        adr;
  14. {
  15. #define  applScratch     0xA78
  16. typedef unsigned long  *lintPtr;        
  17. unsigned long    junk, savedJunk,oldErrHndlr;
  18. /*    load err handler
  19.     save old applScratch data
  20.     put 1 at applScratch
  21.     access address
  22.     is applScratch is zero then
  23.         error
  24.     else
  25.         nil
  26.     restore old applScratch data
  27.     unload err handler
  28. */
  29.     
  30.     oldErrHndlr = *(lintPtr)0x00000008;
  31.     *(lintPtr)8 =(long)&(BusErrHandler);
  32.     
  33.     savedJunk = *(lintPtr)applScratch;
  34.     *(lintPtr)applScratch = 1;
  35.     (long)adr =  (long)adr & 0xFE;
  36.     junk = *(lintPtr)adr;
  37.  
  38.     if( *(lintPtr)applScratch == 0) 
  39.         return("Address is invalid.");
  40.     else
  41.         return(nil);
  42.     
  43.     *(lintPtr)applScratch = savedJunk;
  44.     *(lintPtr)0x00000008 = oldErrHndlr;
  45. }